package cn.it.shop.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import cn.it.shop.model.Audience;
import cn.it.shop.service.AudienceService;
import cn.it.shop.service.TemplateMessageService;
import cn.it.shop.util.GlobalConstants;
import cn.it.shop.util.HttpUtils;
import cn.it.shop.util.JsonUtil;
import cn.it.shop.wechat.model.templatemessage.Template;
import cn.it.shop.wechat.model.templatemessage.TemplateParam;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/***
 * 模板消息service实现
 * @author fangyangsheng
 *
 */
@Service("templateMessageService")
public class TemplateMessageServiceImpl extends BaseServiceImpl<Object> implements TemplateMessageService{

	/***
	 * 获取模板jsonarray
	 */
	@Override
	public org.json.JSONArray getAllPrivateTemplate() {
		org.json.JSONArray jsonArray = null;
		
		//从全局变量工具类中取出access_token
		String accessToken = GlobalConstants.getInterfaceUrl("access_token");
		//获取  url getAllPrivateTemplate
		String getAllPrivateTemplate = GlobalConstants.getInterfaceUrl("get_all_private_template");
		//设置参数accessToken
		Map<String,String> params = new HashMap<String,String>();
		params.put("access_token", accessToken);
		//请求get
		String resultJson = "";
		try {
			//请求结果json字符串
			resultJson = HttpUtils.sendGet(
					getAllPrivateTemplate,params);
		} catch (Exception e) {
			e.printStackTrace();
		}
		if(resultJson != null && !resultJson.equals("")){
			//获取模板列表 json数组
			resultJson = JSONObject.fromObject(resultJson).getString("template_list");
			//json数组
			jsonArray = new org.json.JSONArray(resultJson);
		}
		return jsonArray;
	}
	
	/**
	 *  根据模板列表json 获取 模板id list
	 */
	@Override
	public List<String> getTemplateId(org.json.JSONArray jsonArray) {
		List<String> list = new ArrayList<>();
		//遍历
		for(int i=0 ; i < jsonArray.length() ;i++){
			 //获取每一个JsonObject对象
		    org.json.JSONObject myjObject = jsonArray.getJSONObject(i);
		    list.add(myjObject.getString("template_id"));
		}
		return list;
	}

	/**
	 * 发送模板消息
	 */
	@Override
	public String sendTemplateMessage(Template template) {
		String result = "";
		String sendTemplateMessageUrl = GlobalConstants.getInterfaceUrl("sendTemplateMessage");
		sendTemplateMessageUrl += GlobalConstants.getInterfaceUrl("access_token");
		//请求json
		StringBuffer sb = new StringBuffer();
			sb.append("{");
			sb.append("\"touser\":\""+template.getToUser()+"\",");
			sb.append("\"template_id\":\""+template.getTemplateId()+"\",");
			sb.append("\"url\":\""+template.getUrl()+"\",");
			sb.append("\"topcolor\":\""+template.getTopColor()+"\",");
			sb.append("\"data\":{");
						TemplateParam param = null;
						//遍历参数列表
						for(int i = 0 ; i < template.getTemplateParamList().size() ;i++){
							param = template.getTemplateParamList().get(i);
							//判断是否需要追加逗号,最后一个不需要
							if( i < template.getTemplateParamList().size()-1){
								sb.append("\""+ template.getTemplateParamList().get(i).getName() +"\":{");
									sb.append("\"value\":\""+ template.getTemplateParamList().get(i).getValue() +"\",");
									sb.append("\"color\":\""+ template.getTemplateParamList().get(i).getColor() +"\"");
								sb.append("},");//不是最后一个则加上逗号
							}else{
								sb.append("\""+ template.getTemplateParamList().get(i).getName() +"\":{");
								sb.append("\"value\":\""+ template.getTemplateParamList().get(i).getValue() +"\",");
								sb.append("\"color\":\""+ template.getTemplateParamList().get(i).getColor() +"\"");
								sb.append("}");
							}
						}
					sb.append("}");
			sb.append("}");
		try {
			//请求接口,发送模板信息,接收结果
			result = HttpUtils.sendPostBuffer(sendTemplateMessageUrl,sb.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * 删除消息模板
	 */
	@Override
	public String deleteTemplateMessage(String templateId) {
		String result = "";
		//删除模板消息的url
		String delPrivateTemplateUrl = GlobalConstants.getInterfaceUrl("del_private_template");
		delPrivateTemplateUrl += GlobalConstants.getInterfaceUrl("access_token");
		//设置参数
		Map<String,String> params = new HashMap<String,String>();
		params.put("template_id", templateId);
		//map转jsonObject
		JSONObject jsonmap = JSONObject.fromObject(params);
		try {
			//删除模板
			result = HttpUtils.sendPostBuffer(delPrivateTemplateUrl,jsonmap.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	
	
	

	

}
